/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.faces.model.SelectItem;

/**
 *
 * @author 
 */
public class Empleado implements Serializable{
    private String id_empleado;
    private String dni;
    private String nombre;
    private String direccion;
    private Date fech_nacimiento;
    private String telefono;
    private Usuario obj_usu=new Usuario();

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getDni() {
        return dni;
    }

    public void setDni(String dni) {
        this.dni = dni;
    }

    public Date getFech_nacimiento() {
        return fech_nacimiento;
    }

    public void setFech_nacimiento(Date fech_nacimiento) {
        this.fech_nacimiento = fech_nacimiento;
    }

    public String getId_empleado() {
        return id_empleado;
    }

    public void setId_empleado(String id_empleado) {
        this.id_empleado = id_empleado;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public Usuario getObj_usu() {
        return obj_usu;
    }

    public void setObj_usu(Usuario obj_usu) {
        this.obj_usu = obj_usu;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }
      public static boolean agregarEmpleado(Empleado obj_a){
       boolean a=false;
      Connection conexion = null;
      try {
          conexion= ControladorBD.darConexionBD();
          CallableStatement st;
          st=conexion.prepareCall("{call  sp_Registrar_Empleado(?,?,?,?,?,?,?)}");
          conexion.setAutoCommit(false);
          
          if(obj_a.getDni() != null){
              if(obj_a.getDni().length()>0){
                st.setString(1,obj_a.getDni());
              }
              else{
                st.setString(1,null);
              } 
          }
          else{
              st.setString(1,null);
          }
           if(obj_a.getNombre() != null){
              if(obj_a.getNombre().length()>0){
                st.setString(2,obj_a.getNombre());
              }
              else{
                st.setString(2,null);
              } 
          }
          else{
              st.setString(2,null);
          }
           
           
           if(obj_a.getDireccion() != null){
              if(obj_a.getDireccion().length()>0){
                st.setString(3,obj_a.getDireccion());
              }
              else{
                st.setString(3,null);
              } 
          }
          else{
              st.setString(3,null);
          }  
          
          st.setDate(4,obj_a.getFech_nacimiento());  
          if(obj_a.getTelefono() != null){
              if(obj_a.getTelefono().length()>0){
                st.setString(6,obj_a.getTelefono());
              }
              else{
                st.setString(5,null);
              } 
          }
          else{
              st.setString(5,null);
          }
          st.setString(6,obj_a.getObj_usu().getId_usuario()); 
          st.registerOutParameter(7, java.sql.Types.VARCHAR); //intentar extraer el parametro de salida y darselo al codigo
          st.execute();
          if(st.getString(7)!=null){
              a=true;
          }
          st.close();
          conexion.setAutoCommit(true);
          conexion.close();
     }catch(Exception error){
          System.out.println("Error en agregarEmpleado:"+error.getMessage());
          error.printStackTrace();
    }
      return a;
    
     }
      public static ArrayList<Empleado>getCargarEmpleado(){
        ArrayList<Empleado> arreglo=null;
        Empleado obj = null;
        Connection conexion = null;
        ResultSet rs= null;

        try{
            conexion = ControladorBD.darConexionBD();
            CallableStatement st = conexion.prepareCall("{call sp_Listar_Empleado()}");
            rs=st.executeQuery();
            //st(1,estado);
            if(rs.next()){
                arreglo=new ArrayList<Empleado>();
                do{
                    obj=new Empleado();
                    obj.setDni(rs.getString("dni"));
                    obj.setNombre(rs.getString("Nombre"));
                    obj.setDireccion(rs.getString("direccion"));
                    obj.setFech_nacimiento(rs.getDate("fech_nacimiento"));
                    obj.setTelefono(rs.getString("telefono"));
                    Usuario ob=new Usuario();
                    ob.setId_usuario(rs.getString("id_usuario"));
                    obj.setObj_usu(ob);
                    arreglo.add(obj);
                }while(rs.next());
            }
        }catch(Exception error) {
            System.out.println("Error en Listado: " + error.getMessage());
            error.getMessage();
        }
        return arreglo;
    
    }

          public ArrayList<SelectItem>   getCargarComboEmpleado(){         
            ArrayList<SelectItem> arrayEmpleado = new ArrayList<SelectItem>();
         
            Connection conexion = null;
            ResultSet rs = null;
            try{
            conexion = ControladorBD.darConexionBD();
            CallableStatement st = conexion.prepareCall( "{call sp_Listar_Empleado()}");    
            rs = st.executeQuery();        
            if (rs.next()){    
                    do{
                        arrayEmpleado.add(new SelectItem(rs.getString("id_Empleado"), 
                                                        rs.getString("nombre")));   
                    } while (rs.next());

                }  
                rs.close();
                st.close();
                conexion.close();

            }catch(Exception error){
                System.out.println("Error en el metodo por: " +
                        error.getMessage());
                        error.printStackTrace();
            }    

            return arrayEmpleado;
    } 

}
  